# -*- coding: utf-8 -*-
"""
@Time    : 2024/8/23 15:40 
@Author  : ZhangShenao 
@File    : 7.使用Serper谷歌搜索工具.py
@Desc    : 使用Serper谷歌搜索工具

Serper是一个第三方的谷歌搜索服务提供商
它会在后台浏览器模拟真实的页面运行,完全模仿人类的操作,可以确保搜索结果返回用户实际看到的内容
目前体验测试来看,Serper比谷歌官方提供的检索服务内容更全面、响应速度更快

Serper官网: https://serper.dev/
LangChain整合文档: https://python.langchain.com/v0.2/docs/integrations/tools/google_serper/
"""
import dotenv
from langchain_core.utils.function_calling import convert_to_openai_tool
from pydantic import BaseModel, Field

from google_serper_tool import create_google_serper_tool


# 定义搜索查询参数
class SerperArgSchema(BaseModel):
    query: str = Field(description="执行搜索的查询语句")


# 加载环境变量
dotenv.load_dotenv()

# 创建GoogleSerperRun工具,并指定name和description等相关信息
serper_tool = create_google_serper_tool()

# 使用convert_to_openai_tool方法,将工具转换成OpenAI的的工具调用参数
print(f"tools_param: {convert_to_openai_tool(serper_tool)}")

# 调用工具,获取结果
print(serper_tool.invoke({"query": "2024年奥运会男子乒乓球单打冠军是谁？"}))
